/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ru.jSkyRoom.selector;

import java.util.Collection;
import ru.jSkyRoom.interfaces.JSkyMod;
import ru.jSkyRoom.interfaces.major.ActorValue;
import ru.jSkyRoom.interfaces.major.Ammo;
import ru.jSkyRoom.interfaces.major.Armature;
import ru.jSkyRoom.interfaces.major.Armor;
import ru.jSkyRoom.interfaces.major.Book;
import ru.jSkyRoom.interfaces.major.Container;
import ru.jSkyRoom.interfaces.major.Dialog;
import ru.jSkyRoom.interfaces.major.DialogBranch;
import ru.jSkyRoom.interfaces.major.DialogView;
import ru.jSkyRoom.interfaces.major.Enchantment;
import ru.jSkyRoom.interfaces.major.EncounterZone;
import ru.jSkyRoom.interfaces.major.Faction;
import ru.jSkyRoom.interfaces.major.FormList;
import ru.jSkyRoom.interfaces.major.GameSetting;
import ru.jSkyRoom.interfaces.major.GlobalForm;
import ru.jSkyRoom.interfaces.major.HeadPart;
import ru.jSkyRoom.interfaces.major.ImageSpace;
import ru.jSkyRoom.interfaces.major.Ingredient;
import ru.jSkyRoom.interfaces.major.Keyword;
import ru.jSkyRoom.interfaces.major.LeveledCharacter;
import ru.jSkyRoom.interfaces.major.LeveledItemList;
import ru.jSkyRoom.interfaces.major.MagicEffect;
import ru.jSkyRoom.interfaces.major.Miscellaneous;
import ru.jSkyRoom.interfaces.major.NPC;
import ru.jSkyRoom.interfaces.major.Outfit;
import ru.jSkyRoom.interfaces.major.Perk;
import ru.jSkyRoom.interfaces.major.Potion;
import ru.jSkyRoom.interfaces.major.Projectile;
import ru.jSkyRoom.interfaces.major.Race;
import ru.jSkyRoom.interfaces.major.Recipe;
import ru.jSkyRoom.interfaces.major.Spell;
import ru.jSkyRoom.interfaces.major.Texture;
import ru.jSkyRoom.interfaces.major.Weapon;
import ru.jSkyRoom.manager.ModManager;
import skyproc.GRUP_TYPE;

/**
 *
 * @author Rakev
 */
public class SelectorFacade {

    private static final SelectorFacade instance = new SelectorFacade();

    public static SelectorFacade create() {
        return instance;
    }

    public static SelectorFacade create(final JSkyMod mod) {
        return new SelectorFacade() {
            @Override
            protected JSkyMod getLookingMod() {
                return mod;
            }
        };
    }

    protected SelectorFacade() {
    }

    protected JSkyMod getLookingMod() {
        return ModManager.getInstance().getAllModsComposite();
    }

    public Collection<Armor> selectArmors() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.ARMO);
    }

    public Collection<Enchantment> selectEnchantments() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.ENCH);
    }

    public Collection<Keyword> selectKeywords() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.KYWD);
    }

    public Collection<FormList> selectFormLists() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.FLST);
    }

    public Collection<LeveledItemList> selectLeveledItemLists() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.LVLI);
    }

    public Collection<Armature> selectArmatures() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.ARMA);
    }

    public Collection<LeveledCharacter> selectLeveledCharacters() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.LVLN);
    }

    public Collection<NPC> selectNPCs() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.NPC_);
    }

    public Collection<ImageSpace> selectImageSpaces() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.IMGS);
    }

    public Collection<Perk> selectPerks() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.PERK);
    }

    public Collection<Spell> selectSpells() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.SPEL);
    }

    public Collection<Race> selectRaces() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.RACE);
    }

    public Collection<Texture> selectTextures() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.TXST);
    }

    public Collection<Weapon> selectWeapons() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.WEAP);
    }

    public Collection<MagicEffect> selectMagicEffects() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.MGEF);
    }

    public Collection<Potion> selectPotions() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.ALCH);
    }

    public Collection<Ingredient> selectIngredients() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.INGR);
    }

    public Collection<Ammo> selectAmmos() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.AMMO);
    }

    public Collection<Faction> selectFactions() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.FACT);
    }

    public Collection<GameSetting> selectGameSettings() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.GMST);
    }

    public Collection<ActorValue> selectActorValues() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.AVIF);
    }

    public Collection<EncounterZone> selectEncounterZones() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.ECZN);
    }

    public Collection<GlobalForm> selectGlobalForms() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.GLOB);
    }

    public Collection<Recipe> selectRecipes() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.COBJ);
    }

    public Collection<Miscellaneous> selectMiscellaneouss() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.MISC);
    }

    public Collection<Outfit> selectOutfits() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.OTFT);
    }

    public Collection<HeadPart> selectHeadParts() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.HDPT);
    }

    public Collection<Projectile> selectProjectiles() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.PROJ);
    }

    public Collection<Book> selectBooks() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.BOOK);
    }

    public Collection<Dialog> selectDialogs() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.DIAL);
    }

    public Collection<DialogBranch> selectDialogBranchs() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.DLBR);
    }

    public Collection<DialogView> selectDialogViews() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.DLVW);
    }

    public Collection<Container> selectContainers() {
        return (Collection) getLookingMod().getMajors(GRUP_TYPE.CONT);
    }

}
